Aline Deschamps
10 octobre 2016
1 - Un bref historique
“The 2016 Top Programming Languages”, by IEEE Spectrum
2 - Une grande diversité grâce aux packages
La version “base” de R dispose d’un ensemble de fonctions disponibles par défaut, mais celles-ci peuvent être grandement enrichies à l’aide de packages.
Liste des packages “officiels” disponibles sur le CRAN : https://cran.r-project.org/web/packages/available_packages_by_name.html.
Egalement disponible regroupés par thématiques : https://cran.r-project.org/web/views/.
Autres sources de packages en dehors du CRAN : Bioconductor, Github (grâce au package “devtools”), …
=> N’importe qui peut donc contribuer à R et développer son propre package, puis en donner l’accès depuis son github ou bien en le soumettant au CRAN.
Formats de données possibles en entrée dans R (liste non exhaustive) :
Un très grand nombre de méthodes statistiques implémentées et les “dernières” méthodes très rapidement mises à disposition !
+ code des méthodes accessible : compréhension, vérification, modification, …
Anecdote : méthode des “Random Forest” R (2002) vs SAS (2012 !)
3 - Un langage de programmation à part entière
Eléments de programmation usuels :
=> Possibilités quasi-illimitées et facile à prendre en main si on a déjà des bases de programmation
# Fonction carré
carre <- function(x) {
y <- x * x
return(y)
}
# Création d'un vecteur des carrés de 1 à 10
v <- NULL
for(k in 1:10) {
v[k] <- carre(k)
}
moyenne <- mean(v)
# Autres possibilités à la place de la boucle
w <- sapply(1:10, carre)
z <- (1:10)^2Eléments spécifiques du langage R :
Avantages d’utiliser “RStudio” :
4 - Résultats reproductibles
Avantage R car langage de programmation (vs logiciel “clic-bouton”) :
=> reproductible et partageable
Les packages “rmarkdown” et “knitr” permettent de générer des rapports automatiques dans divers formats avec comme contenu : du texte, du code et le résultat obtenu en sortie de ce code, le tout écrit en “markdown”.
Formats disponibles :
Ressource : R Markdown Cheat Sheet
R Notebooks : Document écrit en markdown contenant des morceaux de code pouvant être exécutés indépendamment et de manière intéractive, avec les résultats visibles directement au sein du document.
Même principe (pour ceux qui connaissent) que “iPython Notebook” ou “Jupyter Notebook” mais directement intégré dans RStudio.
5 - Graphiques hautement personnalisables
Nombreux éléments de personnalisation graphique présents “de base” dans R :
=> tout est personnalisable !
Nombreux types de graphiques possibles :
Le package “ggplot2” est LE package graphique de référence en R.
Il fonctionne selon une grammaire bien particulière, qui peut demander un petit temps d’adaptation, mais permet ensuite de réaliser facilement des graphiques très personnalisés.
Exemples de packages pour des graphiques dynamiques en R :
6 - R et le big data
Nombreuses bases de données NoSQL accessibles depuis R :
Nombreux packages permettant connexion à diverses API :
Nombreux packages pour utiliser techno “big data” avec R :
Liste non exhaustive de packages pour la “data science” et le “machine learning” :
Exemples d’utilisations de R pour des projets “big data”/“data science” :
7 - R pour le web
Le package “shiny” (et tous ses descendants : “shinydashboard”, “shinyjs”, …)
=> permet de générer une page web dynamique, ie. HTML, CSS et JavaScript en codant uniquement en R !
Deux fichiers “ui.R” et “server.R” :
“ui.R” : User Interface script, contrôle la mise en page et l’apparence de l’application
“server.R” : Server script, contient les instructions dont l’ordinateur a besoin pour construire l’application
shinyUI(fluidPage(
titlePanel("Hello World!"),
# Sidebar with a slider input
# for the number of bins
sidebarLayout(
sidebarPanel(
sliderInput("bins", "Number of bins:",
min = 5, max = 50, value = 30)
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("distPlot")
)
)
))shinyServer(function(input, output) {
output$distPlot <- renderPlot({
x <- faithful[, 2]
bins <- seq(min(x), max(x),
length.out = input$bins + 1)
# draw the histogram
# with the specified number of bins
hist(x, breaks = bins,
col = 'skyblue', border = 'white')
})
})Divers exemples :
Galerie Shiny (avec des exemples de base)
“Shiny user showcase” (avec des exemples un peu plus complexes et sophistiqués)
“Show me Shiny” (pas mal d’autres exemples intéressants)
8 - Une grande communauté
MERCI !!!
Des questions ?